<?php

/**
 * Description of RepoCargoHabitacion
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class RepoCargoHabitacion extends Repositorio
{

  function __construct()
  {
    $this->tabla = "cargo_habitacion";
    $this->id = "idCargoHabitacion";
  }

  function agregar(CargoHabitacion $cargoHabitacion, $idComprobante)
  {
    try
    {
      $descuento = $cargoHabitacion->getDescuento() != "" ? $cargoHabitacion->getDescuento() : 0;
      $comprobanteServicios = new ComprobanteServicios();
      $query = "INSERT INTO " . $this->tabla . "(fechaHora, PMS, descuento) values (";
      $query .= "GETDATE(), ";
      $query .= $cargoHabitacion->getPms() . ", ";
      $query .= $descuento . ")";
//      $query .= "5)";
      $result = $this->PostSQL($query);
      $id = $this->GetInsertedId();
      if ($result)
      {
        if ($cargoHabitacion->getDetalle() != null)
        {
          $repoDetalleCargoH = new RepoDetalleCargoHabitacion();
          /* @var $detalle DetalleCargoHabitacion */
          foreach ($cargoHabitacion->getDetalle() as $detalle)
          {
            $detalle->setIdCargoHabitacion($id);
            $result = $repoDetalleCargoH->agregar($detalle);
            if (!$result)
            {
              return $result;
            }
          }
        }
      } else
      {
        return result;
      }
      $result = $comprobanteServicios->cerrarCargoHabitacion($idComprobante, $id);
      return ($result) ? "1" : $result;
    } catch (Exception $ex)
    {
      return $ex;
    }
  }

  function modificar(CargoHabitacion $cargoHabitacion)
  {
    try
    {
      $link = $this->OpenDB();
      $this->beginTransaction();
      $query = "UPDATE " . $this->tabla . " SET ";
      $query .= "fechaHora = '" . $cargoHabitacion->getFechaHora() . "', ";
      $query .= "PMS = " . $cargoHabitacion->getPms() . ") ";
      $query .= "WHERE " . $this->id . " = " . $cargoHabitacion->getId();
      $result = $this->PostSQL($query);
      $this->commitTransaction();
      $this->CloseDB($link);
      return $result;
    } catch (Exception $ex)
    {
      return $ex;
    }
  }

}

?>
